package com.bjpowernode.crm.workbench.mapper;

import com.bjpowernode.crm.commons.domain.ReturnObject;
import com.bjpowernode.crm.workbench.domain.Activity;
import com.bjpowernode.crm.workbench.dto.ActivityQueryDto;
import org.apache.ibatis.annotations.Param;

import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * 访问市场活动数据
 *
 * @author 刘逸晖
 */
public interface ActivityMapper {

    /**
     * 新增市场活动
     *
     * @param activity 预新增的市场活动
     * @return 新增的记录数
     */
    void insertActivity(Activity activity);

    /**
     * 按条件分页查询市场活动
     *
     * @param activityQueryDto 条件
     * @return 市场活动列表
     */
    List<Activity> selectActivitiesByConditionsForPage(ActivityQueryDto activityQueryDto);

    /**
     * 按条件分页查询市场活动数
     *
     * @param activityQueryDto 条件
     * @return 市场活动数
     */
    int selectCountOfActivitiesByConditions(ActivityQueryDto activityQueryDto);

    /**
     * 根据 id 批量删除市场活动
     *
     * @param ids id 列表
     */
    void deleteActivitiesByIds(@Param("ids") String[] ids);

    /**
     * 根据 id 查询市场活动
     *
     * @param id id
     * @return 市场活动
     */
    Activity selectActivityById(@Param("id") String id);

    /**
     * 根据 id 更新市场活动
     *
     * @param activity 市场活动的 id 极其新数据
     * @return 更新结果
     */
    void updateActivityById(Activity activity);

    /**
     * 根据线索 id 查市场活动列表
     *
     * @param clueId 线索的 id
     * @return 市场活动列表
     */
    List<Activity> selectActivityByClueId(@Param("clueId") String clueId);

    /**
     * 查询市场活动，根据 id 排除不需要的市场活动
     *
     * @param idsOfExcludedActivities 不需要的市场活动
     * @param name                    名称关键词，可为空
     * @return 市场活动列表
     */
    List<Activity> selectActivitiesByIdsOfExclusions(@Param("idsOfExcludedActivities") List<String> idsOfExcludedActivities, @Param("name") String name);

    /**
     * 根据 id 查名称
     *
     * @param id 市场活动的 id
     * @return 市场活动的名称
     */
    String selectNameById(@Param("id") String id);

    /**
     * 根据 id 列表查市场活动列表
     *
     * @param ids id 列表
     * @return 市场活动列表
     */
    List<Activity> selectActivitiesByIds(@Param("ids") String[] ids);

    /**
     * 根据 id 列表和名称查市场活动列表
     *
     * @param name 名称
     * @param ids  id 列表
     * @return 市场活动列表
     */
    List<Activity> selectActivitiesByIdsAndName(@Param("name") String name, @Param("ids") List<String> ids);

}
